import Process from "./Process"
import System from './System'
import { nanoid } from 'nanoid'
import AppEnum from "./AppEnum"
export default class App{
    appId
    appName
    img
    processes
    constructor(appName,img){
        // 初始化appId
        this.appId = nanoid().replace(/[0-9-]/g).replace(/undefined/g,'')
        // 初始化appName
        this.appName = appName
        // 初始化img
        this.img = img
        // 初始化进程列表
        this.processes = new Map()
        // 注册idtoName
        AppEnum.pushIdToName(this.appId,this.appName)
    }
    // app api
    // 打开app的一个进程
    openApp(){
       // 申请一个进程
        let process = System.processManage.applyProcess(this.appId)
        // app 绑定该线程
        this.processes.set(process.getId(),process)
        // 置顶 该app
        System.windowManage.pushTheWinToFront(process.getWindow())
        // 刷新系统窗口
        System.systemWindow.$forceUpdate()
        return process
    }
    getAppId(){
        return this.appId
    }
    //关闭指定线程
    closeApp(processId){
        if(!processId) console.error('processId cannot be null')
        let process = this.processes.get(processId)
        // 取消绑定
        this.processes.delete(processId)
        // 向processManage申请删除该线程
        System.processManage.stopProcess(process.getId())
        // 刷新系统窗口
        System.systemWindow.$forceUpdate()
    }
}